package com.bsoft.AQS;

/**
 * @program: demo
 * @description: 可重入锁
 * @author: hdh
 * @create: 2022:03:31 10:19
 */
/*
     可重入锁 可重复可递归的锁 在外层使用锁 之后 在内层仍然可以使用 并且 不发送死锁 ，这样的锁叫作可重入锁

     在一个Synchronzied 修饰的方法或代码块的内部
     调用本类的其他Synchriized修饰的方法或代码块时 是永远可以得到锁


 */
//同步代码块
public class ReenterLockDemo {
    static Object objectA = new Object();

    public static void m1() {
        new Thread(() -> {
            synchronized (objectA) {
                System.out.println(Thread.currentThread().getName() + "\t" + "外层调用");
                synchronized (objectA) {
                    System.out.println(Thread.currentThread().getName() + "\t" + "中层调用");
                    synchronized (objectA) {
                        System.out.println(Thread.currentThread().getName() + "\t" + "内层调用");
                    }
                }

            }
        }, "t1").start();
    }

    public static void main(String[] args) {
        m1();
    }
}
